home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / packet / thenet / bbs / msys / term.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-08-31  |  1.4 KB  |  86 lines

  1. #include <dos.h>
  2. #include <stdio.h>
  3.  
  4. /* This is a simple terminal program using the software nullmodem
  5.    hook in MSYS. The nullmodem.exe tsr must be loaded before your
  6.    multisession operating system (like windows or desqview). Then
  7.    start MSYS in one window and this program in another. */
  8.  
  9.  
  10. int intnum=0;
  11.  
  12. void send(int c)
  13. {
  14. union REGS regs;
  15. while (1)
  16.       {
  17.       regs.x.ax=0;
  18.       int86(intnum,®s,®s);
  19.       if (regs.x.ax&1) break;
  20.       }
  21.  
  22. regs.x.ax= (c<<8) | 2;
  23. int86(intnum,®s,®s);
  24. }
  25.  
  26. int receive()
  27. {
  28. union REGS regs;
  29. while (1)
  30.       {
  31.       regs.x.ax=0;
  32.       int86(intnum,®s,®s);
  33.       if (regs.x.ax&2) break;
  34.       }
  35. regs.x.ax=1;
  36. int86(intnum,®s,®s);
  37. return regs.x.ax & 255;
  38. }
  39.  
  40. int ready()
  41. {
  42. union REGS regs;
  43. regs.x.ax=0;
  44. int86(intnum,®s,®s);
  45. return regs.x.ax & 2;
  46. }
  47.  
  48. void cdon()
  49. {
  50. union REGS regs;
  51. regs.x.ax=3;
  52. int86(intnum,®s,®s);
  53. }
  54.  
  55. void cdoff()
  56. {
  57. union REGS regs;
  58. regs.x.ax=4;
  59. int86(intnum,®s,®s);
  60. }
  61.  
  62.  
  63. void main(int argc, char *argv[])
  64. {
  65. int c;
  66. if (argc!=2) {printf("Usage: %s hex-int\n",argv[0]);exit(1);}
  67. sscanf(argv[1],"%x",&intnum);
  68. printf("Using interrupt %X\n",intnum);
  69. cdon();
  70.  
  71.  
  72. while (1)
  73.       {
  74.       if (kbhit())
  75.          {
  76.          c=getch();
  77.          if (c==27) break;
  78.          send(c);
  79.          }
  80.       if (ready()) putchar(receive());
  81.       }
  82. cdoff();
  83. }
  84.  
  85.  
  86.